#pragma once

#include "GShader.h"
#include "ShaderIncludeDX10.h"
#include "ConstantStorageDX10.h"

class CGShaderDX10: public CGShader, public CConstantStorageDX10
{
private:
    ID3D10Blob           *m_pShaderDebugInfo;
    ID3D10GeometryShader *m_pShader;

public:
    CGShaderDX10                       ( mString a_sFileName );
    ~CGShaderDX10                      ( );
    virtual mVoid Compile              ( );
    virtual mVoid Bind                 ( );
    /* adding constant into cbuffer */
    virtual mBool SendConstantValue    ( const std::string &a_sConstName, mVoid *a_pValue, size_t a_ValueSize, TChangeFreq a_ChangeFreq );
    virtual mBool SendTexture          ( const std::string &a_sTextureName, CTexture2D *a_pTexture );
};